using UnityEngine;
using System.Collections;

public class ApresentationScene : MonoBehaviour 
{
	#region Atributos
	
	private enum e_State { FADE_IN, DELAY, FADE_OUT };
	private e_State _state;
	
	private const int DELAY_TIME_IN_SEC = 2;
	
	private float _time = 0;
	
	private Efeitos _efeitos;
	
	private Sprite2D background;
	
	#endregion
	
	#region Start
	
	void Start () 
	{
		_efeitos = new Efeitos();
		_efeitos.ActiveEffect = Efeitos.E_Effeitos.FadeIn;
		_efeitos.StartEffect();
		
		background = new Sprite2D("Images/Backgrounds/Apresentation", Vector2.zero);
		
		_state = e_State.FADE_IN;
	}
	
	#endregion
	
	#region Update
	
	void Update () 
	{
		_efeitos.Update();
		
		switch(_state)
		{
			case e_State.FADE_IN:
				FadeIn();
				break;
			
			case e_State.DELAY:
				Delay();
				break;
			
			case e_State.FADE_OUT:
				FadeOut();
				break;
		}
	}
	
	#endregion
	
	#region OnGUI
	
	void OnGUI()
	{
		background.Draw();
		
		_efeitos.Draw();
	}
	
	#endregion
	
	#region Métodos
	
	private void FadeIn()
	{
		if(!_efeitos.IsActive)
			_state = e_State.DELAY;
	}
	
	private void Delay()
	{
		_time += Time.deltaTime;
		
		if(_time >= DELAY_TIME_IN_SEC)
		{
			_state = e_State.FADE_OUT;
			
			_efeitos.UseBlackBackground = true;
			_efeitos.ActiveEffect = Efeitos.E_Effeitos.FadeOut;
			_efeitos.StartEffect();
		}
	}
	
	private void FadeOut()
	{
		if(!_efeitos.IsActive)
			Application.LoadLevel("MenuScene");
	}
	
	#endregion
}
